package com.gitee.sop.gatewaycommon.bean;

import lombok.Data;

import java.util.Collections;
import java.util.List;

/**
 * @author tanghc
 * 路由声明
 * 实例
 * {"filters":[],
 * "id":"bigdata.get1.0",
 * "ignoreValidate":0,
 * "mergeResult":1,
 * "name":"bigdata.get",
 * "needToken":0,
 * "order":0,
 * "path":"/story/bigdata/v1",
 * "permission":0,
 * "predicates":[],
 * "status":1,
 * "uri":"lb://story-service",
 * "version":"1.0"}
 */
@Data
public class RouteDefinition {
    /**
     * 路由的Id（接口名+版本号），确保此id全局唯一
     */
    private String id;

    /**
     * 接口名   (model.function.action)
     */
    private String name;

    /**
     * 版本号   (1.0)
      */
    private String version;

    /**
     * 路由断言集合配置
     */
    private List<GatewayPredicateDefinition> predicates = Collections.emptyList();

    /**
     * 路由过滤器集合配置
     */
    private List<GatewayFilterDefinition> filters = Collections.emptyList();

    /**
     * 路由规则转发的目标uri （lb://sop-story）
     */
    private String uri;

    /**
     * uri后面跟的path
     */
    private String path;

    /**
     * 路由执行的顺序
     */
    private int order = 0;

    /**
     * 是否忽略验证，业务参数验证除外
     */
    private int ignoreValidate;

    /**
     * 状态，0：待审核，1：启用，2：禁用
     */
    private int status = 1;

    /**
     * 是否合并结果
     */
    private int mergeResult;

    /**
     * 是否需要授权才能访问
     */
    private int permission;

    /**
     * 是否需要token
     */
    private int needToken;

}